<?php
/**
 * Permite hacer reportes sobre el servicio de estacionamiento
 * @package simertweb 
 * @subpackage models 
 * @category AdministraciÃ³n
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Mregistros extends CI_Model {

    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->model('mtarjeta');
        $this->load->model('mzona');
        $this->load->model('msubcalles');
        $this->load->model('mcalles');
    }

   
    /**
     * Obtiene los registros de los vehÃ­culos estacionados del dÃ­a actual
     * @param type $dia es la fecha actual
     * @return array
     */
    function registroDiario($dia) {
        //almacena los registro de control de acuerdo a la fecha ingresada
        $this->db->where('fecha', $dia);
        $registros = $this->db->get('registrocontrol')->result();
        //almacena las subcalles
        $this->db->where('uso', 1);
        $this->db->order_by('idZona');
        $subcalles = $this->db->get('subcalle')->result();
        //almacena el registro del dia con todass las subcalles
        $registroDiario = array();
        //almacena todos los valores del registro diario   
        $i = 0;
        foreach ($subcalles as $value) {
            $i++;
            $V = 0; //almacena los vehiculos por calle
            $min30 = 0; //menor a 30 minutos
            $min60 = 0; //de 31 a 60 minutos
            $min90 = 0; //de 61 a 90 minutos
            $min120 = 0; //de 91 a 120 minutos
            $min150 = 0; //de 121 a 150 minutos
            $min180 = 0; //de 151 a 180 minutos
            $C = 0; //alamcena el tiempo total por subcalle
            $y = 0; //almacena los minutos


//            foreach ($registros as $registro) {
//                $this->db->where('RegistroControl_idRegistroControl', $registro->idRegistroControl);
//                $this->db->where('RegistroControl_Subcalle_idSubcalle', $registro->Subcalle_idSuballe);
//                $regtar = $this->db->get('controltarjeta')->result();
////                var_dump($regtar);
//                if (!empty($regtar)) {
//                    foreach ($regtar as $value1) {
//                        $y = $value1->espacios * 30;
////                        print_r('espacio: ' . $y);
//                    }
//                    $V++;
//                    $C += $y;
//                    if ($y <= 30) {
//                        $min30++;
//                    } elseif ($y > 30 and $y <= 60) {
//                        $min60++;
//                    } elseif ($y > 60 and $y <= 90) {
//                        $min90++;
//                    } elseif ($y > 90 and $y <= 120) {
//                        $min120++;
//                    } elseif ($y > 120 and $y <= 150) {
//                        $min150++;
//                    } elseif ($y > 150 and $y <= 180) {
//                        $min180++;
//                    }
//                } else {
//                    $this->db->where('RegistroControl_idRegistroControl', $registro->idRegistroControl);
//                    $regrec = $this->db->get('controlrecarga')->row();
//                    if (!empty($regrec)) {
//                        var_dump($regrec);
//                        $this->db->where('idConsumo', $regrec->Consumo_idConsumo);
//                        $consumo = $this->db->get('consumo')->row();
//                        $hora = $consumo->tiempoTotal;
//                        list($horas, $minutos, $segundos) = explode(':', $hora);
//                        $segundos1 = ($horas * 3600 ) + ($minutos * 60 ) + $segundos;
//                        $hora2 = $consumo->tiempoInicial;
//                        list($horas, $minutos, $segundos) = explode(':', $hora2);
//                        $segundos2 = ($horas * 3600 ) + ($minutos * 60 ) + $segundos;
//                        $y = ($segundos1 - $segundos2) / 60;
//                        $C += $y;
//                        $V++;
//                        if ($y <= 30) {
//                            $min30++;
//                        } elseif ($y > 30 and $y <= 60) {
//                            $min60++;
//                        } elseif ($y > 60 and $y <= 90) {
//                            $min90++;
//                        } elseif ($y > 90 and $y <= 120) {
//                            $min120++;
//                        } elseif ($y > 120 and $y <= 150) {
//                            $min150++;
//                        } elseif ($y > 150 and $y <= 180) {
//                            $min180++;
//                        }
//                    }
//                }
//            }

            foreach ($registros as $registro) {
                if ($registro->Subcalle_idSubcalle == $value->idSubcalle) {
                    $this->db->where('RegistroControl_idRegistroControl', $registro->idRegistroControl);
                    $CT = $this->db->get('controltarjeta')->row();
                    //controla si $CT no esta vacio
                    if (!empty($CT)) {
                        $V++;
                        $y = $CT->espacios * 30;
                        $C += $y;
                        if ($y <= 30) {
                            $min30++;
                        } elseif ($y > 30 and $y <= 60) {
                            $min60++;
                        } elseif ($y > 60 and $y <= 90) {
                            $min90++;
                        } elseif ($y > 90 and $y <= 120) {
                            $min120++;
                        } elseif ($y > 120 and $y <= 150) {
                            $min150++;
                        } elseif ($y > 150 and $y <= 180) {
                            $min180++;
                        }
                    }
                    //obtiene los registro de control recarga
                    $this->db->where('RegistroControl_idRegistroControl', $registro->idRegistroControl);
                    $CR = $this->db->get('controlrecarga')->row(); //control recarga
                    //controla si $CR no esta vacio
                    if (!empty($CR)) {
                        //contiene los registro de recargas que tengan el consumo correspondiente 
                        //al registro de control
                        $this->db->where('idConsumo', $CR->Consumo_idConsumo);
                        $CM = $this->db->get('consumo')->row(); //consumo
                        $hora = $CM->tiempoTotal;
                        list($horas, $minutos, $segundos) = explode(':', $hora);
                        $segundos1 = ($horas * 3600 ) + ($minutos * 60 ) + $segundos;
                        $hora2 = $CM->tiempoInicial;
                        list($horas, $minutos, $segundos) = explode(':', $hora2);
                        $segundos2 = ($horas * 3600 ) + ($minutos * 60 ) + $segundos;
                        $y = ($segundos1 - $segundos2)/60;
//                        print_r($segundos1.'    '.$segundos2.'   ' .$y.' =>  ');
//                        $y = $CM->tiempoTotal;
                        $C += $y;
                        $V++;
                        if ($y <= 30) {
                            $min30++;
                        } elseif ($y > 30 and $y <= 60) {
                            $min60++;
                        } elseif ($y > 60 and $y <= 90) {
                            $min90++;
                        } elseif ($y > 90 and $y <= 120) {
                            $min120++;
                        } elseif ($y > 120 and $y <= 150) {
                            $min150++;
                        } elseif ($y > 150 and $y <= 180) {
                            $min180++;
                        }
                    }
                }
            }

            $registro = array(
                'fecha' => $dia,
                'inicio' => $dia,
                'fin' => $dia,
                'id' => $value->idSubcalle,
                'zona' => $this->mzona->zona($value->idZona),
                'subcalle' => $this->mcalles->calle($this->msubcalles->idprincipal($value->idSubcalle)) . '; ' .
                $this->mcalles->calle($this->msubcalles->idsecundaria1($value->idSubcalle)) . '; ' .
                $this->mcalles->calle($this->msubcalles->idsecundaria2($value->idSubcalle)).' ('.$this->msubcalles->obtener_orientacion($value->idSubcalle).')',
                'azules' => $value->espAzules,
                'amarillos' => $value->espAmarillos,
                'operacion' => 10,
                'vehiculos' => $V,
                'consumo' => $C,
                'min30' => $min30,
                'min60' => $min60,
                'min90' => $min90,
                'min120' => $min120,
                'min150' => $min150,
                'min180' => $min180
            );
            array_push($registroDiario, $registro);
        }
        return $registroDiario;
    }

    /**
     * Obtiene los registros de los vehiculos estacionados
     * @param type $fecInicio es la fecha de inicio del reporte
     * @param type $fecFin es la fecha de finalizaciÃ³n del reporte
     * @return array
     */
    function registroFecha($fecInicio, $fecFin) {
        $fechaInicio = strtotime($fecInicio);
        $fechaFin = strtotime($fecFin);
        $count = ($fechaFin - $fechaInicio) / 86400;
        $RD = array(); //registro diario

        $id = 0;
        $zona = '';
        $subcalle = '';
        $azules = 0;
        $amarillos = 0;
        $V = 0;
        $consumo = 0;
        $min30 = 0;
        $min60 = 0;
        $min90 = 0;
        $min120 = 0;
        $min150 = 0;
        $min180 = 0;
        $fec = $fechaInicio;
        $C = 0;
        $array = array();
        $this->db->where('uso', 1);
        $this->db->order_by('idZona');
        $calles = $this->db->get('subcalle')->result();
        //recorre las subcalles
        foreach ($calles as $value) {
            //recorre el arreglo de las fechas
            for ($i = 0; $i <= $count; $i++) {
                $nuevaFecha = date('Y-m-d', $fec);
                $fec +=86400;
                //$RD almacena el registro diario
                $RD = $this->registroDiario($nuevaFecha);

                if ($value->idSubcalle == $RD[$C]['id']) {
                    $id = $RD[$C]['id'];
                    $zona = $RD[$C]['zona'];
                    $subcalle = $RD[$C]['subcalle'];
                    $azules = $RD[$C]['azules'];
                    $amarillos = $RD[$C]['amarillos'];
                    $V += $RD[$C]['vehiculos'];
                    $consumo += $RD[$C]['consumo'];
                    $min30 = $min30 + $RD[$C]['min30'];
                    $min60 = $min60 + $RD[$C]['min60'];
                    $min90 = $min90 + $RD[$C]['min90'];
                    $min120 = $min120 + $RD[$C]['min120'];
                    $min150 = $min150 + $RD[$C]['min150'];
                    $min180 = $min180 + $RD[$C]['min180'];
                }
            }
            $C++;
            //almacena la informacion creada para aÃ±adirla al arreglo final
            $registro = array(
                'fecha' => $fecInicio . ' hasta ' . $fecFin,
                'inicio' => $fecInicio,
                'fin' => $fecFin,
                'id' => $id,
                'zona' => $zona,
                'subcalle' => $subcalle,
                'azules' => $azules,
                'amarillos' => $amarillos,
                'operacion' => 10 * $count,
                'vehiculos' => $V,
                'consumo' => $consumo,
                'min30' => $min30,
                'min60' => $min60,
                'min90' => $min90,
                'min120' => $min120,
                'min150' => $min150,
                'min180' => $min180
            );
            $V = 0;
            $consumo = 0;
            $min30 = 0;
            $min60 = 0;
            $min90 = 0;
            $min120 = 0;
            $min150 = 0;
            $min180 = 0;
            $fec = $fechaInicio;
            array_push($array, $registro);
        }
        return $array;
    }

}

?>
